package interfaz;

import javax.swing.JInternalFrame;

import modelo.Administrador;
import modelo.CentroEstudios;
import modelo.Tecnico;
import modelo.Usuario;

import javax.swing.JLabel;
import java.awt.Font;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;

import java.awt.color.CMMException;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class VAltaUsuario extends JInternalFrame {

	private CentroEstudios centroEstudios;
	private JTextField txtid;
	private JTextField txtape;
	private JTextField txtmail;
	private JPasswordField txtpass;
	private JTextField txtnombre;
	private JComboBox cmbrol;
	
	/**
	 * Create the frame.
	 */
	public VAltaUsuario(CentroEstudios centroEstudios) {

		this.centroEstudios = centroEstudios;
				
		setBounds(100, 100, 450, 318);
		getContentPane().setLayout(null);
		setTitle("Nuevo usuario:");
		setClosable(true);
		
		JLabel lblAltaUsuarios = new JLabel("Alta usuarios");
		lblAltaUsuarios.setFont(new Font("Dialog", Font.BOLD, 22));
		lblAltaUsuarios.setBounds(124, 12, 185, 27);
		getContentPane().add(lblAltaUsuarios);
		
		JLabel lblNewLabel = new JLabel("ID Usuario:");
		lblNewLabel.setBounds(51, 64, 89, 15);
		getContentPane().add(lblNewLabel);
		
		JLabel lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(51, 90, 83, 15);
		getContentPane().add(lblNombre);
		
		JLabel lblApellidos = new JLabel("Apellidos:");
		lblApellidos.setBounds(51, 116, 89, 15);
		getContentPane().add(lblApellidos);
		
		JLabel lblNewLabel_1 = new JLabel("Email:");
		lblNewLabel_1.setBounds(51, 143, 89, 15);
		getContentPane().add(lblNewLabel_1);
		
		JLabel lblNewLabel_2 = new JLabel("Rol:");
		lblNewLabel_2.setBounds(51, 170, 89, 15);
		getContentPane().add(lblNewLabel_2);
		
		JLabel lblPassword = new JLabel("Password:");
		lblPassword.setBounds(51, 197, 89, 15);
		getContentPane().add(lblPassword);
		
		txtid = new JTextField();
		txtid.setBounds(175, 62, 185, 19);
		getContentPane().add(txtid);
		txtid.setColumns(10);
		
		txtape = new JTextField();
		txtape.setBounds(175, 114, 185, 19);
		getContentPane().add(txtape);
		txtape.setColumns(10);
		
		txtmail = new JTextField();
		txtmail.setBounds(175, 141, 185, 19);
		getContentPane().add(txtmail);
		txtmail.setColumns(10);
		
		txtpass = new JPasswordField();
		txtpass.setBounds(175, 196, 185, 19);
		getContentPane().add(txtpass);
		
		cmbrol = new JComboBox(new String[] {"Usuario","Técnico","Administrador"});
		cmbrol.setBounds(175, 167, 185, 19);
		getContentPane().add(cmbrol);
		
		txtnombre = new JTextField();
		txtnombre.setBounds(175, 88, 185, 19);
		getContentPane().add(txtnombre);
		txtnombre.setColumns(10);
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (!comprobarVacios()){
					Usuario usuario = null;
					switch (cmbrol.getSelectedIndex()) {
					case 0:
						usuario = new Usuario(txtid.getText(), txtnombre.getText(), txtape.getText(), txtmail.getText(), String.valueOf(txtpass.getPassword()));
						break;
					case 1:
						usuario = new Tecnico(txtid.getText(), txtnombre.getText(), txtape.getText(), txtmail.getText(), String.valueOf(txtpass.getPassword()));
						break;
					case 2:
						usuario = new Administrador(txtid.getText(), txtnombre.getText(), txtape.getText(), txtmail.getText(), String.valueOf(txtpass.getPassword()));
					}
					try {
						VAltaUsuario.this.centroEstudios.crearUsuario(usuario);
						JOptionPane.showMessageDialog(VAltaUsuario.this, "Usuario creado correctamente.", "Nuevo usuario", JOptionPane.INFORMATION_MESSAGE);
						ponerBlancos();
					} catch (SQLException e1) {
						e1.printStackTrace();
						JOptionPane.showMessageDialog(VAltaUsuario.this, "No se ha podido crear el usuario.", "Nuevo usuario", JOptionPane.ERROR_MESSAGE);
					}
				}
			}
		});
		btnAceptar.setBounds(159, 237, 117, 25);
		getContentPane().add(btnAceptar);

	}
	
	/**
	 * Comprueba que los campos estén vacíos
	 * @return True si hay alguno vacío
	 */
	public boolean comprobarVacios() {
		if (txtid.getText().equals("") || txtnombre.getText().equals("") || txtape.getText().equals("") ||
				txtmail.getText().equals("") || txtpass.getText().equals("")){
			return true;
		}
		return false;
		
	}
	
	public void ponerBlancos(){
		txtid.setText("");
		txtnombre.setText("");
		txtape.setText("");
		txtmail.setText("");
		cmbrol.setSelectedIndex(0);
		txtpass.setText("");
	}
	
}
